﻿namespace CloudNinja.Metering.Data.Dapper
{
    using System.Collections.Generic;
    using System.Data;

    using global::Dapper;

    public class DynamicParametersForTvp : DynamicParameters, SqlMapper.IDynamicParameters
    {
        private List<TableValueParameter> tvpParameters;

        public DynamicParametersForTvp()
        {
        }

        public DynamicParametersForTvp(object template):base(template)
        {
            
        }

        public void Add(TableValueParameter parameter)
        {
            if (this.tvpParameters == null)
            {
                this.tvpParameters = new List<TableValueParameter>();
            }
            this.tvpParameters.Add(parameter);
        }

        void SqlMapper.IDynamicParameters.AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            this.AddParameters(command, identity);
            if (this.tvpParameters == null)
            {
                return;
            }

            foreach (var tableValueParameter in this.tvpParameters)
            {
                tableValueParameter.AddParameters(command, identity);
            }
        }
    }
}
